MySQL Cluster安装

目前有3台机器,我们设置一台ndb_mgm,两台ndbd,两台mysqld

角色 机器
ndb_mgm 10.160.22.157
ndbd 10.160.22.158
10.160.22.159
mysqld 10.160.22.157
10.160.22.158

  1. 下载MySQL cluster安装包
    https://downloads.mysql.com/archives/cluster/

  2. 解压安装包
    tar -zxvf mysql-cluster-8.0.21-el7-x86_64.tar.gz

  3. 复制文件
    mkdir /usr/local/mysql
    cp -R mysql-cluster-8.0.21-el7-x86_64/* /usr/local/mysql/

  4. 创建配置管理节点
    4.1 将bin目录中的ndb_mgm文件全部复制到/usr/local/bin/目录中
    cp /usr/local/mysql/bin/ndb_mgm
    /usr/local/bin/

ndb_mgm,ndb客户端命令

ndb_mgmd,ndb管理节点启动命令

ndb_mgm是ndb_mgmd(MySQL Cluster Server)的客户端管理工具,通过它可以方便的检查Cluster的状态、启动备份、关闭Cluster等功能。

​ 4.2 修改管理节点配置文件
​ 4.2.1 创建数据库集群配置文件的目录
​ mkdir /var/lib/mysql-cluster
​ 4.2.2 编辑配置文件
​ vim /var/lib/mysql-cluster/config.ini
​ 文件内如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[ndbd default]
NoOfReplicas=2
DataMemory=1024M
IndexMemory=512M

[ndb_mgmd]
HostName=10.160.22.157
DataDir=/var/lib/mysql-cluster/

[ndbd]
HostName=10.160.22.158
DataDir=/usr/local/mysql/data/

[ndbd]
HostName=10.160.22.159
DataDir=/usr/local/mysql/data/

[mysqld]
HostName=10.160.22.157

[mysqld]
HostName=10.160.22.158

[NDBD DEFAULT]:表示每个数据节点的默认配置,在每个节点的[NDBD]中不用再写这些选项,只能有一个。
NoOfReplicas:副本数量,数据节点数必须是副本数的整数倍。
[NDB_MGMD]:表示管理节点的配置,只有一个,默认的对其他节点的端口是1186,故服务器需要开放1186端口。
[NDBD]:表示每个数据节点的配置,可以有多个,分别写上不同数据节点的IP地址。
[MYSQLD]:表示SQL节点的配置,可以有多个,分别写上不同SQL节点的IP地址

4.3 启动管理节点

  • 有新增节点或首次启动

    1
    ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial
  • 无新增节点启动

    1
    ndb_mgmd -f /var/lib/mysql-cluster/config.ini

4.4 查看管理节点运行状态

  • 进入控制台

    1
    ndb_mgm
  • 查看状态

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    * ndb_mgm> show
    Connected to Management Server at: localhost:1186
    Cluster Configuration

    [ndbd(NDB)] 2 node(s)
    id=2 (not connected, accepting connect from 10.160.22.158)
    id=3 (not connected, accepting connect from 10.160.22.159)

    [ndb_mgmd(MGM)] 1 node(s)
    id=1 @10.160.22.157 (mysql-8.0.21 ndb-8.0.21)

    [mysqld(API)] 2 node(s)
    id=4 (not connected, accepting connect from 10.160.22.157)
    id=5 (not connected, accepting connect from 10.160.22.158)
  1. 创建数据节点
    5.1 配置10.160.22.159
    因为该节点为单纯的data节点,所以先配置该节点
    5.1.1 配置/etc/my.cnf
1
2
3
4
5
6
7
8
9
10
11
12
13
[mysqld]
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/data/mysql.sock
symbolic-links=0
user=mysql
tmpdir=/tmp

[mysqld_safe]
log-error=/usr/local/mysql/data/error.log
pid-file=/usr/local/mysql/data/mysql.pid

[mysql_cluster]
ndb-connectstring=10.160.22.157:1186

5.1.2 新增用户并修改权限
groupadd mysql
useradd mysql -g mysql

修改目录

cd /usr/local/mysql
mkdir data
chown -R root .
chown -R mysql data
chgrp -R mysql .

5.1.3 安装数据库
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/

用户为mysql的名称需要跟配置文件my.cnf中的user=mysql相同

–basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ 需要加上

启动成功后最后一行会输出数据库密码:root@localhost: >Ba4<oa!u7fD*

5.1.2 设置开启自启动

1
2
3
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld

5.1.3 启动data节点
service mysqld start

启动的过程中可能会遇到一些错误,比如找不到/tmp/mysql.sock
这里建立一个软连接即可: ln -s /usr/local/mysql/data/mysql.sock /tmp/mysql.sock
建立好之后再启动

5.1.4 修改数据库密码

  • 启动之后需要修改数据库密码,否则会无法使用,初始密码就是5.1.3步骤中的密码
    /usr/local/mysql/bin/mysql -uroot -p

  • 修改密码:
    alter user ‘root’@‘localhost’ identified by ‘ojbKpqiOhsg8/i’;

  • 退出重新用新密码登录
    /usr/local/mysql/bin/mysql -uroot -p

5.1.5 启动data节点
/usr/local/mysql/bin/ndbd --initial

首次启动加上--initial,非首次启动不需要加,不然会丢失之前的数据

5.1.6 启动之后到管理节点查看cluster状态
ndb_mgm> show

1
2
3
4
5
6
7
8
9
10
11
12
Cluster Configuration

[ndbd(NDB)] 2 node(s)
id=2 (not connected, accepting connect from 10.160.22.158)
id=3 @10.160.22.159 (mysql-8.0.21 ndb-8.0.21, starting, Nodegroup: 0)

[ndb_mgmd(MGM)] 1 node(s)
id=1 @10.160.22.157 (mysql-8.0.21 ndb-8.0.21)

[mysqld(API)] 2 node(s)
id=4 (not connected, accepting connect from 10.160.22.157)
id=5 (not connected, accepting connect from 10.160.22.158)

10.160.22.159状态已经连接上了

5.2 配置10.160.22.158
因为该节点为data和sql节点,所以该节点的配置需要在158的基础上增加sql的配置,主要修改/etc/my.cnf

5.2.1 修改/etc/my.cnf文件

[mysqld]

设置ndbcluster

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ndbcluster
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/data/mysql.sock
symbolic-links=0

# 设置默认的存储引擎

default-storage-engine=ndbcluster
port=3306
user=mysql
tmpdir=/tmp

[mysqld_safe]
log-error=/usr/local/mysql/data/error.log
pid-file=/usr/local/mysql/data/mysql.pid

[mysql_cluster]
ndb-connectstring=10.160.22.157:1186

!includedir /etc/my.cnf.d

其他方式与10.160.22.159的配置相同
最终需要将root密码修改为与159相同,所有节点的密码都应相同

5.2.3 启动之后到管理节点查看cluster状态
ndb_mgm> show

1
2
3
4
5
6
7
8
9
10
11
12
Cluster Configuration

[ndbd(NDB)] 2 node(s)
id=2 @10.160.22.158 (mysql-8.0.21 ndb-8.0.21, Nodegroup: 0, *)
id=3 @10.160.22.159 (mysql-8.0.21 ndb-8.0.21, Nodegroup: 0)

[ndb_mgmd(MGM)] 1 node(s)
id=1 @10.160.22.157 (mysql-8.0.21 ndb-8.0.21)

[mysqld(API)] 2 node(s)
id=4 (not connected, accepting connect from 10.160.22.157)
id=5 @10.160.22.158 (mysql-8.0.21 ndb-8.0.21)

可以看到data和sql节点都已经连接OK了

  1. 创建sql节点
    6.1 10.160.22.159在上面已经完成了,不在配置

6.2 配置10.160.22.157
6.2.1 修改/etc/my.cnf文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[mysqld]
ndbcluster
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/data/mysql.sock
symbolic-links=0
default-storage-engine=ndbcluster
port=3306
user=mysql
tmpdir=/tmp

[mysqld_safe]
log-error=/usr/local/mysql/data/error.log
pid-file=/usr/local/mysql/data/mysql.pid

!includedir /etc/my.cnf.d

6.2.2 启动sql节点
service mysqld start


安装过程中出现的问题:

  1. 报错找不到libcrypto.so.1.1
    ln -s /usr/local/mysql/lib/private/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
    ln -s /usr/local/mysql/lib/private/libssl.so.1.1 /usr/lib64/libssl.so.1.1